package org.stars.util.reflect.test1;

/**
 * MarkInterface: supertipo da cui deve derivare ogni implementazione di un oggetto che funga da 
 * chiave da usare in una concretizzazione di una <code>MapGeneric</code>
 * 
 * @author Insiel s.p.a.<br/>
 * A. Svetina (908303) 21-feb-2007
 */
public interface ChiaveTipo
{
	
	/**
	 * <p>Firma alternativa del metodo equals usata per la ricerca per chiave parziale (come per es.
	 * nel metodo findvalues() )</p>
	 * @param <K>	Il tipo di chiave/EB su cui lavorare
	 * @param k		l'oggetto che viene confrontato con la chiave
	 * @return		<i>true</i> se l'oggetto passato come parametro corrisponde ai criteri di ricerca parziale
	 * settati nella chiave, <i>false</i> altrimenti
	 */
	<K extends ChiaveTipo> boolean equals(K k);

    @Override
	abstract boolean equals(Object o);

    @Override
	abstract int hashCode();
}
